return {
	'L3MON4D3/LuaSnip',
	version = '*',
	dependencies = {
		'kmarius/jsregexp',
	},
	lazy = true,
	keys = {
		{
			'<Tab>',
			function()
				local luasnip = require 'luasnip'
				if luasnip.expand_or_jumpable() then
					luasnip.expand_or_jump()
				else
					vim.fn.feedkeys('\t', 'n')
				end
			end,
			mode = { 'i', 's' },
			silent = true,
			desc = 'LuaSnip: Jump forward',
		},
		{
			'<S-Tab>',
			function()
				local luasnip = require 'luasnip'
				if luasnip.jumpable(-1) then
					luasnip.jump(-1)
				end
			end,
			mode = { 'i', 's' },
			silent = true,
			desc = 'LuaSnip: Jump backward',
		},
		{
			'<C-p>',
			function()
				local luasnip = require 'luasnip'
				if luasnip.choice_active() then
					luasnip.change_choice(-1)
				end
			end,
			mode = { 'i', 's' },
			silent = true,
			desc = 'LuaSnip: Previous choice',
		},
		{
			'<C-n>',
			function()
				local luasnip = require 'luasnip'
				if luasnip.choice_active() then
					luasnip.change_choice(1)
				end
			end,
			mode = { 'i', 's' },
			silent = true,
			desc = 'LuaSnip: Next choice',
		},
	},
}
